package cn.edu.ncut.cs.springboot.petmanagementsystem.service;

import cn.edu.ncut.cs.springboot.petmanagementsystem.pojo.ServiceReservation;
import cn.edu.ncut.cs.springboot.petmanagementsystem.pojo.ServiceType;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface PetServiceService {
    /**
     * 查询宠物服务项目列表
     */
    List<ServiceType> getServiceTypeList();

    /**
     * 查看单项服务详情
     */
    ServiceType getServiceTypeById(Long id);

    /**
     * 用户预约宠物服务
     */
    boolean reserveService(ServiceReservation reservation);

    /**
     * 查询宠物的服务预约记录
     */
    IPage<ServiceReservation> getReservationList(Long userId, Long petId, Integer pageNum, Integer pageSize);

    /**
     * 管理员确认预约
     */
    boolean confirmReservation(Long id);

    /**
     * 标记服务已完成
     */
    boolean finishReservation(Long id);

    /**
     * 用户取消预约
     */
    boolean cancelReservation(Long id, Long userId);

    /**
     * 检查预约时间可用性
     */
    boolean checkAvailability(Long serviceTypeId, LocalDateTime reservationDate);

    /**
     * 获取可预约时间段
     */
    List<Map<String, Object>> getAvailableTimes(Long serviceTypeId, String date);

    /**
     * 获取用户预约历史
     */
    IPage<ServiceReservation> getMyHistory(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 计算寄养费用
     */
    Map<String, Object> calculateFosterCost(LocalDateTime startDate, LocalDateTime endDate, Long petId);

    /**
     * 获取寄养房间信息
     */
    List<Map<String, Object>> getFosterRooms();

    /**
     * 获取寄养日志
     */
    List<Map<String, Object>> getFosterLogs(Long fosterId);

    /**
     * 获取寄养服务信息
     */
    Map<String, Object> getFosterServiceInfo();

    /**
     * 获取寄养记录列表（带宠物信息）
     */
    IPage<cn.edu.ncut.cs.springboot.petmanagementsystem.vo.FosterRecordVO> getFosterRecordList(Long userId, Long petId, Integer pageNum, Integer pageSize);
}
